﻿using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Web.Mvc;
using Tecnosop.Dominio;
using System.Collections.Generic;

namespace Tecnosop.WebUI.Models
{
    public class ClienteViewModel
    {
        [DisplayName("Rut")]
        public string RUT_CLIENTE { get; set; }

        [DisplayName("Región")]
        [Required(ErrorMessage = "Seleccione una region")]
        public string REGION { get; set; }

        [DisplayName("Nombre")]
        [Required(ErrorMessage = " Ingrese el nombre del cliente")]
        public string NOMBRE { get; set; }

        [DisplayName("Dirección")]
        [Required(ErrorMessage = " Ingrese la direccion del cliente")]
        public string DIRECCION { get; set; }

        [DisplayName("Ciudad")]
        [Required(ErrorMessage = " Ingrese una ciudad")]
        public string CUIDAD { get; set; }

        [DisplayName("Comuna")]
        [Required(ErrorMessage = " Ingrese una comuna")]
        public string COMUNA { get; set; }

        [DisplayName("Email")]
        //[Required(ErrorMessage = " Ingrese el email del cliente")]
        [DataType(DataType.EmailAddress)]
        [RegularExpression(@"^(([^<>()[\]\\.,;:\s@\""]+(\.[^<>()[\]\\.,;:\s@\""]+)*)|(\"".+\""))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$",
        ErrorMessage = "El mail ingresado no es correcto")]
        public string EMAIL { get; set; }

        [DisplayName("Teléfono fijo")]
        [DefaultValue(" ")]
        public string TELEFONO_1 { get; set; }

        [DisplayName("Teléfono celular")]
        [DefaultValue(" ")]
        public string TELEFONO_2 { get; set; }

        [DisplayName("Giro")]
        [Required(ErrorMessage = " Ingrese el tipo de giro del cliente")]
        public string GIRO { get; set; }
    }

    public class BusquedaClienteViewModel
    {
        [DisplayName("Criterios de búsqueda")]
        [UIHint("Enum")]
        [DataType("Criterios")]
        public CriteriosDeBusquedaCliente Criterios { get; set; }
        
        [Required(ErrorMessage = "Debe ingresar algún término para la búsqueda")]
        [Remote("ValidaBusquedaVacia", "Cliente", AdditionalFields = "Criterios")]
        public string AreaBusqueda { get; set; }
    }

    public class ResultadoBusquedaClienteViewModel
    {
        public IEnumerable<CLIENTE> Resultado { get; set; }
        public string CriterioParaOrdenar { get; set; }
        //public CriteriosDeBusquedaCliente CriterioParaOrdenar { get; set; }
    }

    public enum CriteriosDeBusquedaCliente
    {
        Rut,
        Nombre,
        Email
    }
}
